import hashlib
'''
# python内置的hash函数可以快速获取到hash。
rawdata = "我只是一个测试数据"
rawdata1 = "我只是一个测试数据 "
print("Hash-rawdata : ",hex(hash(rawdata)))
print("Hash-rawdata1 : ",hex(hash(rawdata1)))

# hashlib库开发
# 使用hashlib库，可以有效的避免直接使用hash()函数
rawdata = "我只是一个测试数据"
hash = hashlib.md5(rawdata.encode())	# 注意传入的数据需要是二进制bytes类型数据。
print("Hashlib使用hashlib.md5(rawdata) :")
print("type : ", type(hash))            # 数据类型
print("digest : ", hash.digest())       # 返回数据值
print("hexdigest: ", hash.hexdigest())    # 返回十六进制的摘要哈希值
'''


# 使用algorithms_guaranteed查看所有平台都支持的哈希算法名称
print("打印所有平台都支持的算法名称：")
print(hashlib.algorithms_guaranteed)

print("打印所运行的python解释器支持算法名称：")
print(hashlib.algorithms_available)


print("使用update更新数据")
hash = hashlib.sha256()
hash.update(b"hello")
print(hash.hexdigest())
hash.update(b"word")
print(hash.hexdigest())

#  hash类型的其他方法
# hash.block_size：以字节表示的结果哈希对象的大小。
# hash.block_size：以字节表示的哈希算法的内部块大小。
# hash.name：此哈希对象的规范名称，总是为小写形式并且总是可以作为 new() 的形参用来创建另一个此类型的哈希对象。
# hash.copy()：返回哈希对象的副本（“克隆”）。 这可被用来高效地计算共享相同初始子串的数据的摘要。
